/***************************************************
 @Name :        1196kk0
 @Time :        2025-05-26
 @Email :       2232506563@qq.com
 @Comment :     数码管初始化及显示
 @FileName :    drv_SPI_Nixie.c
 @Version :     4.0
****************************************************/

#include "drv_SPI_Nixie.h"


/********* 全局变量 *********/
static uint8_t Nixie_duan[] = {0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0x7d , 0x07 , 0x7f , 0x6f}; //0-9
static uint8_t Nixie_wei[] = {0x08 , 0x04 , 0x02 , 0x01};
static uint8_t display_buff[] = {0};

/**************************************************
函数名称：drv_SPI_Nixie_Config
函数功能：Nixie初始化
输入参数：无
输出参数：无
其它说明：
***************************************************/
void drv_SPI_Nixie_Config(void)
{
    drv_SPI2_Config();
}

/**************************************************
函数名称：drv_Nixie_display
函数功能：Nixie显示
输入参数：位码wei、段码duan
输出参数：无
其它说明：
***************************************************/
void drv_Nixie_display(uint8_t wei , uint8_t duan)
{
    drv_SPI2_sendData(Nixie_wei[wei]);
    drv_SPI2_sendData(duan);
    GPIO_ResetBits(GPIOB , GPIO_Pin_12);
    delay_ms(1);
    GPIO_SetBits(GPIOB , GPIO_Pin_12);
}

/**************************************************
函数名称：drv_Nixie_display
函数功能：更新Nixie显示温度
输入参数：无
输出参数：显示数组display_buff
其它说明：
***************************************************/
uint8_t* Nixie_UpdateDisplay_buff(void)
{
    float T = drv_SHT20_get_temp();
    int temp_int = (int)(T * 10); // 将温度放大10倍，保留一位小数
    
    // 提取各位数字
    display_buff[0] = Nixie_duan[temp_int / 1000]; // 十位
    display_buff[1] = Nixie_duan[(temp_int % 1000) / 100]; // 个位和小数点
    display_buff[2] = Nixie_duan[(temp_int % 100) / 10] | 0x80; // 十分位
    display_buff[3] = Nixie_duan[temp_int % 10]; // 百分位

    return display_buff;
}



